package com.service.business.pay.service;

import com.service.business.base.dto.LoginUserSession;
import com.service.business.order.controller.rep.BaseOrderRep;
import com.service.business.pay.controller.rep.PayRecord;
import com.service.business.pay.controller.rep.PayResultRep;
import com.service.business.pay.controller.rep.PayTypeRep;
import com.service.business.pay.controller.req.PayOrderReq;
import com.service.dao.model.*;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <dl>
 * <dt>back-end</dt>
 * <dd>Description:</dd>
 * <dd>Copyright: Copyright (C) 2015</dd>
 * <dd>Company: </dd>
 * <dd>CreateDate: 2019年11月15日</dd>
 * </dl>
 *
 * @author
 */
public interface PayService {

	void payProductOtherOrder(String orderNo, OrderProductOther orderProductOther, Map<String, BigDecimal> totalMap, List<OrderProductOtherTotal> totalList, Map<String, SysConfig> configMap);

	void payProductHrComboOrder(String orderNo, OrderProductHrCombo orderProductOther, List<PayTypeRep> payTypeRepList, PayOrderReq payOrderReq);

	void pay(PayOrderReq payOrderReq, LoginUserSession session, String orderNo);

	void payProductLockComboOrder(String lockNo, OrderProductLockCombo orderProductLockCombo, List<PayTypeRep> payTypeRepList, PayOrderReq payOrderReq);

	boolean isEnoughPayOrder(BigDecimal totalMoney, Integer memberId, List<PayTypeRep> payType);

	List<PayRecord> getProductOrderPayRecord(Integer orderId, Integer payGroup, Integer orderType);

	List<PayRecord> getProductHrComboPayRecord(Integer orderId, Integer payGroup, Integer orderType);
}
